Xilinx FPGA平台DDR3设计保姆式教程(4) 您所在的位置:网站首页 ddr ip设计总监 Xilinx FPGA平台DDR3设计保姆式教程(4)

Xilinx FPGA平台DDR3设计保姆式教程(4)

#Xilinx FPGA平台DDR3设计保姆式教程(4)| 来源: 网络整理| 查看: 265

本文转载自:FPGA大叔的博客

实验任务:

将输入数据(data_in)存入ddr,然后读出,验证输入输出数据是否相等。

一、前言 接上一篇(3)MIG的使用教程

MIG配置如下:

1. 系统时钟sys_clk = 200Mhz 2. 系统复位sys_rst 低有效 3. 模式:4:1 4. 位宽: 16bit

注:由于选择的DDR3的突然长度为8,所以mig的数据位宽=16*8=128bit,对应到代码即app_wdf_data[127:0] , app_rd_data[127:0]。

二、系统方案 2.1方案设计 实验任务:

将数据(data_in),存入ddr,然后读出,验证输入输出数据是否相等。

实验目的:

初步掌握DDR读写设计。

为什么要先过FIFO再写入DDR?

因为DDR接口对用户而言并不是一直有效,只有等DDR“有效”时(app_rdy = 1 && app_wdf_rdy = 1),才能进行写入。

2.1.1输入接口时序图

输入数据为1-50共50个数据,以vld_in信号表征输入数据有效。

2.2状态机设计 2.2.1独热码

localparam S0_IDLE = 6'b000001; //初始化状态,DDR初始化成功就跳转S1 localparam S1_WAIT = 6'b000010; //等待状态,等FIFO缓存好数据就跳转S2 localparam S2_WRITE = 6'b000100; //写DDR状态,FIFO数据写完就跳转到S3 localparam S3_WR_DONE = 6'b001000; //写完成状态,给出读地址初始值就跳到S4 localparam S4_READ = 6'b010000; //读DDR状态,读到相应长度的数量就跳到S5 localparam S5_RD_DONE = 6'b100000; //读完成状态,跳回IDLE

2.2.2状态机流程图

2.2.3三段式状态机 always @(posedge sys_clk or posedge sys_rst)begin if(sys_rst == 1'b1) current_state



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有